package ar.uba.fi.taller2.cmmiassistant.persistencia;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import ar.uba.fi.taller2.cmmiassistant.modelo.aplicacion.CmmiAssistant;
import ar.uba.fi.taller2.cmmiassistant.modelo.cmmi.AreaProceso;
import ar.uba.fi.taller2.cmmiassistant.modelo.cmmi.Capacidad;
import ar.uba.fi.taller2.cmmiassistant.modelo.cmmi.Categoria;
import ar.uba.fi.taller2.cmmiassistant.modelo.cmmi.Madurez;
import ar.uba.fi.taller2.cmmiassistant.modelo.cmmi.ModeloProcesos;
import ar.uba.fi.taller2.cmmiassistant.modelo.cmmi.Objetivo;
import ar.uba.fi.taller2.cmmiassistant.modelo.cmmi.Practica;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.XStreamer;

public class GenerarModeloProcesos {

    public static void main(String[] args) throws IOException {
        
        ModeloProcesos modeloProcesos = new ModeloProcesos();
        AreaProceso area;
        Objetivo objetivo;
        Madurez madurez;
        Categoria categoria;
        Practica practica;
        Capacidad capacidad;
        
        /* areas de proceso */
        area = new AreaProceso();
        area.setIdAreaProceso(1);
        area.setAcronimo("PP");
        area.setNombre("Project Planning");
        
        objetivo = new Objetivo();
        objetivo.setIdObjetivo(1);
        objetivo.setNombre("Establish Estimates");
        objetivo.setDescripcion("Estimates of project planning parameters are established and maintained.");

        practica = new Practica();
        practica.setIdPractica(1);
        practica.setNombre("Estimate the Scope of the Project");
        practica.setDescripcion("Establish a top-level work breakdown structure (WBS) to estimate the scope of the project.");
        
        objetivo.getPracticas().add(practica);
        
        area.getObjetivosGenericos().add(objetivo);
        
        modeloProcesos.getAreas().add(area);
        
        
        
        /* madurez */
        
        madurez = new Madurez();
        madurez.setIdMadurez(1);
        madurez.setNivel(2);
        madurez.setNombre("Managed");
        madurez.setDescripcion("");
        madurez.getAreasProceso().add(area);
        
        modeloProcesos.getNiveles().add(madurez);
        
        
        madurez = new Madurez();
        madurez.setIdMadurez(2);
        madurez.setNivel(3);
        madurez.setNombre("Defined");
        madurez.setDescripcion("");
        modeloProcesos.getNiveles().add(madurez);

        madurez = new Madurez();
        madurez.setIdMadurez(3);
        madurez.setNivel(4);
        madurez.setNombre("Quantitatively Managed");
        madurez.setDescripcion("");
        modeloProcesos.getNiveles().add(madurez);

        madurez = new Madurez();
        madurez.setIdMadurez(4);
        madurez.setNivel(5);
        madurez.setNombre("Optimizing");
        madurez.setDescripcion("");
        modeloProcesos.getNiveles().add(madurez);
        
        
        /* categorias */
        categoria = new Categoria();
        categoria.setIdCategoria(5);
        categoria.setNombre("Project Management");
        categoria.getAreasProceso().add(area);
        
        
        /* capacidades */
        capacidad = new Capacidad();
        //capacidad.setIdCapacidad(1);
        capacidad.setNivel(1);
        //capacidad.getPracticas().add(practica);
        
        modeloProcesos.getCategorias().add(categoria);
        
        
        
        ServicioPersistenciaXStream persistencia = new ServicioPersistenciaXStream("");
        
        persistencia.getXStream().toXML(modeloProcesos, new FileOutputStream("src/main/resources/data/cmmi.xml"));
    }
}
